package com.cesce.batch.cobros.items;

import java.math.BigDecimal;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.batch.item.ItemProcessor;

import com.cesce.batch.cobros.reverse.Cobcomunicados;
import com.cesce.batch.cobros.reverse.Cobestados;
import com.cesce.batch.cobros.reverse.Cobregistro;




public class CalculoErroresProcessor implements ItemProcessor<Cobregistro, Cobregistro> {

	protected final Log logger = LogFactory.getLog(getClass());

	//public static final BigDecimal UMBRAL_MAX_LINEAS_ERRONEAS=new BigDecimal(10);
	
	private BigDecimal umbralPorcentajeErroneos;
	private BigDecimal limiteImporteTotalSuperior;
	private BigDecimal limiteImporteTotalInferior;
	
	
	public Cobregistro process(Cobregistro item) throws Exception {
		

//		BigDedimal totalImporte=Cobcomunicados.sumCobcomunicadosesByRegistroAndEstado(item.getIdregistro(), Cobestados.ID_COMUNICADO_CORRECTO);
//
//		if(totalImporte>limiteImporteTotalSuperior) {
//			item.setIdestado(Cobestados.findCobestados(Cobestados.ID_IMPORTE_TOTAL_SUPERIOR));
//		} else 	if(totalImporte<limiteImporteTotalInferior) {
//			item.setIdestado(Cobestados.findCobestados(Cobestados.ID_IMPORTE_TOTAL_INFERIOR));
//		
//		} else {
			item.setLineascorrectas(Cobcomunicados.countCobcomunicadosesByRegistroAndEstado(item.getIdregistro(), Cobestados.ID_COMUNICADO_CORRECTO));
			item.setLineaserroneas(Cobcomunicados.countCobcomunicadosesByRegistroAndEstado(item.getIdregistro(), Cobestados.ID_COMUNICADO_ERRONEO));
			item.setLineastotales(Cobcomunicados.countCobcomunicadosesByRegistro(item.getIdregistro())); 
			
	
			
			if(umbralPorcentajeErroneos.compareTo(item.getLineaserroneas().divideToIntegralValue(item.getLineastotales()).multiply(new BigDecimal(100)))<0) {
				item.setIdestado(Cobestados.findCobestados(Cobestados.ID_PROCESADO_SUPERA_UMBRAL));
			} else {
				item.setIdestado(Cobestados.findCobestados(Cobestados.ID_PROCESADO_NO_SUPERA_UMBRAL));
			}
	    	
			if(item.getLineaserroneas().compareTo(new BigDecimal(0))==0) {
				item.setIdestado(Cobestados.findCobestados(Cobestados.ID_PROCESADO_TODOS_CORRECTOS_UMBRAL));
			}
//		}
		
		return item;
	}


	public BigDecimal getUmbralPorcentajeErroneos() {
		return umbralPorcentajeErroneos;
	}


	public void setUmbralPorcentajeErroneos(BigDecimal umbralPorcentajeErroneos) {
		this.umbralPorcentajeErroneos = umbralPorcentajeErroneos;
	}


	public BigDecimal getLimiteImporteTotalSuperior() {
		return limiteImporteTotalSuperior;
	}


	public void setLimiteImporteTotalSuperior(BigDecimal limiteImporteTotalSuperior) {
		this.limiteImporteTotalSuperior = limiteImporteTotalSuperior;
	}


	public BigDecimal getLimiteImporteTotalInferior() {
		return limiteImporteTotalInferior;
	}


	public void setLimiteImporteTotalInferior(BigDecimal limiteImporteTotalInferior) {
		this.limiteImporteTotalInferior = limiteImporteTotalInferior;
	}
	
	
}
